package org.lanqiao.music.system.dao;

import org.apache.ibatis.annotations.Mapper;
import org.lanqiao.music.common.dto.MusicDTO;
import org.lanqiao.music.system.entity.Music;
import org.apache.ibatis.annotations.Param;
import org.lanqiao.music.system.vo.MusicVO;

import java.util.List;

/**
 * (Music)表数据库访问层
 *
 * @author makejava
 * @since 2024-08-15 20:50:26
 */
@Mapper
public interface MusicDao {


    MusicVO queryById(Integer musicId);

    /**
     * 查询指定行数据
     *
     * @param music 查询条件
     * @return 对象列表
     */
    List<Music> queryAllByLimit(Music music);

    /**
     * 统计总行数
     *
     * @param music 查询条件
     * @return 总行数
     */
    long count(Music music);

    /**
     * 新增数据
     *
     * @param record 实例对象
     * @return 影响行数
     */
    int insert(Music record);

    /**
     * 批量新增数据（MyBatis原生foreach方法）
     *
     * @param entities List<Music> 实例对象列表
     * @return 影响行数
     */
    int insertBatch(@Param("entities") List<Music> entities);


    /**
     * 修改数据
     *
     * @param music 实例对象
     * @return 影响行数
     */
    int update(Music music);

    /**
     * 通过主键删除数据
     *
     * @param musicId 主键
     * @return 影响行数
     */
    int deleteById(Integer musicId);

    /**
     * 批量删除音乐
     *
     * @param musicIds List<Long> 歌曲ID列表
     * @return 影响行数
     */
    int deleteBatch(@Param("musicIds") List<Long> musicIds);


    // 根据歌曲名或歌手名或musicId搜索音乐信息
    List<MusicVO> searchMusic(MusicDTO dto);

    //获取歌词
    String getLyricsByMusicId(Integer musicId);

    //获取歌曲url
    String getMusicFilePathByMusicId(Integer musicId);
}

